function GetSystemDir : String;
   var
      pcSystemDirectory : PChar;
      dwSDSize          : DWORD;
   begin
      dwSDSize := MAX_PATH + 1;
      GetMem( pcSystemDirectory, dwSDSize );
      try
         if Windows.GetSystemDirectory( pcSystemDirectory,
                                                                       dwSDSize ) <> 0 then
            Result := pcSystemDirectory;
      finally
         FreeMem( pcSystemDirectory );
      end;
   end;
